const { exec } = require('../db/mysql')

const getList = (author, keyword) => {
    let sql = `select * from blogs where 1=1 `
    if (author) {
        sql += `and author='${author}' `
    }
    if (keyword) {
        sql += `and title like '%${keyword}%'`
    }
    sql += `order by createtime desc;`
    // 返回的是promise
    return exec(sql)
}

const getDetail = (id) => {
    let sql = `select * from blogs where id='${id}'`
    return exec(sql).then(rows => {
        return rows[0]
    })


}

const newBlog = (blogData = {}) => {
    //blogData是一个博客对象，包含title content属性
    const title = blogData.title
    const content = blogData.content
    const author = blogData.author
    const createTime = Date.now()
    const sql = `insert into blogs (title,content,createtime,author) 
    values ('${title}','${content}',${createTime},'${author}');`
    // return {
    //     id : 3 // 表示新建博客，返回插入到数据表里面的id
    // }
    return exec(sql).then(insertData => {
        console.log('insertData is ', insertData)
        return {
            id: insertData.insertId
        }
    })        

}

const updateBlog = (id, blogData ={}) => {
    // id就是要更新博客的id
    // blogData 是一个博客对象， 包含title content 属性
    console.log('update blog', id , blogData)
    // return true
    const title = blogData.title
    const content = blogData.content
    
    const sql = `
        update blogs set title='${title}',content='${content}' where id=${id}
    `
    return exec(sql).then(updateData => {
        console.log('updateData is',updateData);
        if (updateData.affectedRows > 0){
            return true
        }
        return false
    })
    
}

const delBlog = (id,author) => {
    // id就是要删除博客的 id
    // return true
    const sql = `delete from blogs where id='${id}' and author='${author}'`
    return exec(sql).then(deleteData => {
        console.log(deleteData);
        
        if (deleteData.affectedRows > 0) {
            return true
        }
        return false
    })
}


module.exports = {
    getList,
    getDetail,
    newBlog,
    updateBlog,
    delBlog
}